package com.yanyuan.snio.part;

import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;

/**
 * @author: yanyuan
 * @Date: 2021/3/4 17:20
 * @Description:
 * Charset字符集
 * 编码：字符串 -> 字节数组
 * 解码：字节数组 -> 字符串
 * 分散读取（）
 * 聚集写入（）
 */
@Slf4j
public class NioP6Charset {
    
    //分散聚集
    public void charset() throws IOException {
        //支持字符集
        //Charset.availableCharsets();

//        Charset gbkCharset = Charset.forName("GBK");
        Charset uf8Charset = Charset.forName("UTF-8");
        //获取编码器
        CharsetEncoder encoder = uf8Charset.newEncoder();
        //获取解码器
        CharsetDecoder decoder = uf8Charset.newDecoder();

        CharBuffer charBuffer = CharBuffer.allocate(1024);
        charBuffer.append("广东罗浮山");
        charBuffer.flip();

        //编码
        ByteBuffer enBuf = encoder.encode(charBuffer);
        log.info("编码结果：enBuf = {} ", enBuf);

        //解码
        CharBuffer deBuf = decoder.decode(enBuf);
        log.info("解码结果：deBuf = {} ", deBuf);
    }
}
